#guide

This guide walks you through building a personal knowledge base with SilverBullet. You'll learn how pages, links, tags, queries, and transclusions work together to create an interconnected web of knowledge.

1. Create your first topic pages

Start with 3–4 pages on topics you know well: a programming language, a recipe, a book you've read. Open the Page Picker (Cmd-k / Ctrl-k), type a name, and press Enter.

Keep each page focused on one topic. A page about “Rust” covers Rust. A page about “Ownership” covers ownership. This “atomic note” approach makes pages easy to link and reuse.

Write freely — a paragraph or two is enough to get started.

2. Link as you write

As you write on one page, naturally reference another. Type [ and SilverBullet autocompletes page names:

Rust's [[Ownership](` and SilverBullet autocompletes page names:

```markdown
Rust's [[Ownership) model prevents data races at compile time.

Don’t worry about organizing pages into the “right” folder structure upfront (or at all). Just write and link. The structure emerges from the connections.

3. Discover connections via backlinks

Navigate to one of your linked pages (click a [link](link) or use the Page Picker). Scroll to the bottom and look for the Linked Mentions section.

This shows every page that links to the current page — connections you didn't have to manually create. For example, your “Ownership” page will show that your “Rust” page mentions it.

This is how a knowledge base builds itself: write naturally, link as you go, and let Linked Mention|linked mentions surface the connections.

4. Add structure when it's useful

When you want to categorize or query pages, add some structure.

Hashtags on an empty line tag the page (see Markdown/Hashtags#Scope rules):

#concept

Frontmatter at the top of a page adds structured data:

---
tags: book
author: Italo Calvino
status: reading
---

Now this page is tagged book and has queryable author and status attributes. You can add tags to a page either with the #book syntax, or via a Frontmatter attribute.

5. Query your knowledge

Space Lua/Lua Integrated Query lets you pull live data from your pages. Create a “Currently Reading” page with a query:

${template.each(query[
  from b = tags.book
  where b.status == "reading"
  order by b.lastModified desc
](
  from b = tags.book
  where b.status == "reading"
  order by b.lastModified desc
), templates.pageItem)}

See Template for more rendering options.

6. Embed content across pages

Use Transclusions to pull content from one page into another. For instance on your Index Page, transclude your “Currently Reading” page:

![Currently Reading](Currently Reading)

What's next?

You now have the core pattern: create pages, link them, add structure with tags and frontmatter, and query across your space.